//
//  BlueToothModel.swift
//  XCBlue
//
//  Created by mac on 2025/2/13.
//

import Foundation
import CoreBluetooth

class BlueToothModel: NSObject,Identifiable {
    var id: UUID {
        return peripheral?.identifier ?? UUID() // Use peripheral's identifier or fallback to a new UUID
    }
    var peripheral: CBPeripheral?
    var macAddress: String?
    var RSSI: NSNumber?
    var advData: [String: Any]?
    var deviceName: String?
    var isConnected: Bool = false
    var isCanConect: Bool = false //是否已被连接
    
    var version: String? //固件版本
    var versionName: String? //固件版本名称
    var protocolVersion: Int = 0 //协议版本
    var buildTime: String? //构建版本时间,2021/08/24 14:01
    var voltage: String? //电压值
    var battery: Int = 0 //电量
    var isCharging: Bool = false //是否在充电  不是特别准确，不是实时的，就是记录上一次读取的状态
    var settingModel: DeviceSettingData?
    var azkarQuestModel: AzkarDataModel?
    
}

enum DeviceLanguageType: Int {
    case arabic = 0    // 阿拉伯语
    case english = 1   // 英语
    case french = 2    // 法语
    case urdu = 3      // 乌尔都语
    case turkish = 4   // 土耳其语
    case chinese = 5   // 中文（一代删除）
    case indonesian = 6 // 印尼语
    case hindi = 7     // 印度语 （一代删除）
    case persian = 8   // 波斯语
    case german = 9    // 德语
    case thailand = 10 // 泰语（一代删除）
    case russian = 11  // 俄语
    case malay = 12    // 马来语
}


class DeviceSettingData: NSObject {
    var direction: Int? // 0: 正，1: 反
    var prayerSetDays: Int? // 祈祷时间设置天数
    var prayerSetTime: String? // 祈祷时间设置时的时间
    var counterRemindTime: Int? // 诵经提醒时间间隔，分钟
    var counterRemindStartTime: String? // 诵经提醒开始时间
    var counterRemindEndTime: String? // 诵经提醒结束时间
    var brightState: Int? // 0: 正常电量，1: 低电量
    var languageType: DeviceLanguageType? // 当前语言
    var isHasAzkarFunction: Bool? // 是否有赞念任务功能
    var isHasQuest: Bool? // 是否有目标赞念进行中
    var restTime: Int? // 息屏时间（默认10s, 包含6秒半熄屏和4秒暗屏）
    var is33Open: Bool? // 33N提醒（跟自定义互斥）
    var is100Open: Bool? // 100N提醒（跟自定义互斥）
    var customVibrate: Int? // 自定义震动提醒（跟33N和100N互斥）
    var homeType: Int? // 0：时间正常显示；1：倒计时时间显示
    var scBright: Int? // sc01de 亮度（5~255）
    var screenTime: Int? // SC01屏幕时间（5~300）
}


class AzkarDataModel: NSObject {
    var azkarCount: Int? // 可选的计数
    var azkarTag: Int? // 可选的标记
    var azkarGoals: Int? // 可选的目标
    var startTime: String? // 可选的开始时间
    var endTime: String? // 可选的结束时间
    var questType: Int? // 戒指端：0:无任务；1:有任务未开始；2:任务进行中；3:任务取消；4:任务完成 5:任务暂停
    var tick: String? // 可选的时间戳
    var tempStartTime: String? // 临时保存的开始时间，跟结束后读取的开始时间格式不同
}


